package org.langqiao.io.file;

import java.io.*;

/**
 * 使用字节读取取文件
 * @author YMY
 *
 */
public class ByteFile {
	
	private String filename;//文件名
	//构造方法，指定文件名
	public ByteFile(String filename){
		this.filename = filename;
	}
	//将缓冲区中的数据写入指定的文件中
	public void writeToFile(byte[] buffer) throws IOException {
		FileOutputStream fout=new FileOutputStream(this.filename);//创建文件输出流对象
		fout.write(buffer);//将缓冲区 的数据写入到输出流中
		fout.close();//关闭输出流
	}
	//读取指定文件中的数据并显示
	public void readFromFile() throws IOException {
		FileInputStream fin = new FileInputStream(this.filename);//创建文件输入流对象
		System.out.print(this.filename+":");
		byte[] buffer=new byte[512];
		int count=0;
		do{ 
			count = fin.read(buffer);//读取输入流到缓冲区
			for(int i=0;i<count;i++){
				System.out.print(buffer[i]+" ");
			}
			System.out.println("count="+count);
		}while(count!=-1);//输入流未结束
		fin.close();//关闭输入流
	}
	//将当前那内容复制到文件filename2中
	public void copyFile(String filename2) throws IOException {
		FileInputStream fin = new FileInputStream(this.filename);//创建文件输入流对象
		FileOutputStream fout = new FileOutputStream(filename2);//创建文件输出流对象
		byte[] buffer = new byte[512];//创建字节缓冲区
		int count = fin.read(buffer);//读取输入流
		while(count!=-1){
			fout.write(buffer,0,count);//写入buffer数组的0~count元素,写入buffer缓冲区，从0开始，count个元素
			count = fin.read(buffer);//读取输入流
		}
		fin.close();//关闭文件输入流
		fout.close();//关闭文件输出流
		System.out.println("Copyfile from "+this.filename+" to "+filename2);
	}
	public static void main(String[] args) throws IOException {
		byte[] buffer = {0,1,2,3,4,5,6,7,8,9};
		ByteFile afile = new ByteFile("ByteFile.dat");
		afile.writeToFile(buffer);
		afile.readFromFile();
		afile.copyFile("ByteFile2.dat");
	}
}
